package com.cleaningcloud.common.core.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;

public class UniqueIdUtils {
    // 用于生成序列号的原子计数器
    private static final AtomicInteger counter = new AtomicInteger(0);

    // 时间格式化
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

    public static String generateUniqueId() {
        // 获取当前时间戳并格式化
        String timestamp = sdf.format(new Date());

        // 获取当前计数器值并重置为0，如果达到最大值
        int count = counter.getAndIncrement() % 1000; // 限制在3位内

        // 返回组合后的唯一编号
        return timestamp + String.format("%03d", count);
    }

    public static void main(String[] args) {
        String timestamp = new SimpleDateFormat("ssSSS").format(new Date());

        // 获取当前计数器值并重置为0，如果达到最大值
        int count = counter.getAndIncrement() % 1000; // 限制在3位内
        System.out.println(timestamp);
    }
}
